# -*- coding: utf-8 -*-
# @Time    : 2024/12/18 21:25
# @Author  : xiangbo
# @Email   : xiangbo@163.com
# @File    : log.py
# @Software: PyCharm
# 日志模块
"""
配置log输出格式 time - loglevel - file - func - line - msg
支持输出到log文件和屏幕
支持返回一个logger
"""

import time
import logging
import os
from common.consts import BASE_PATH as base_path
from config.config import Config


class Log:
    @classmethod
    def _config(cls):
        c = Config()
        log_dir = os.path.join(base_path, c.get_runtime('log_dir'))
        now = time.strftime('%Y-%m-%d', time.localtime(time.time()))
        log_file = os.path.join(log_dir, now + '.log')

        # 获取一个标准的logger，配置loglevel
        cls.logger = logging.getLogger()
        cls.logger.setLevel(eval('logging.' + c.get_runtime('log_level').upper()))

        # 建立不同的handler
        file_handler = logging.FileHandler(log_file, mode="a", encoding='utf-8')
        console_handler = logging.StreamHandler()

        # 定义输出格式
        format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
        file_handler.setFormatter(format)
        console_handler.setFormatter(format)

        # 把定制的handler添加到logger中
        cls.logger.addHandler(file_handler)
        cls.logger.addHandler(console_handler)

    @classmethod
    def get_logger(cls):
        cls._config()
        return cls.logger
